package com.depository.oss.quere;

import java.util.concurrent.TimeUnit;

/**
 * @author xiaomei
 * @version V1.0
 * @Title: IRedisQueue
 * @Package com.xiaomei.queue.redis.demo01
 * @Description:
 * @date 11/7/17
 */
public interface IRedisQueue<T> {


    /**
     * 从头开始拿
     * 拿出，没有就等待
     * @return
     * @throws InterruptedException
     */
    public T take() throws InterruptedException;

    /**
     * 从尾开始拿
     * 拿出，没有就等待
     * @return
     * @throws InterruptedException
     */
    public T takeOpposite() throws InterruptedException;



    /**
     * 从头开始拿
     * 拿出，没有就等待 seconds 秒
     * @param seconds
     * @return
     * @throws InterruptedException
     */
    public T poll(int seconds) throws InterruptedException;

    /**
     * 从头开始拿
     * 拿出，没有就等待 seconds 秒
     * @param seconds
     * @return
     * @throws InterruptedException
     */
    public T pollOpposite(int seconds) throws InterruptedException;



    /**
     * 从尾开始放
     * 入队
     * @param value
     * @return
     * @throws InterruptedException
     */
    public void add(T value);



    /**
     * 从头开始放
     * 入队
     * @param value
     * @return
     * @throws InterruptedException
     */
    public void addOpposite(T value);

//
//    /**
//     * 从头开始删除
//     * @return
//     */
//    public T remove();
//
//
//    /**
//     * 从尾开始删除
//     * @return
//     */
//    public T removeOpposite();
//

    /**
     *  删除所有
     */
    public void clearAll();


}
